package kotlin05.src.main.java.com.example.kotlin05.s03

/**
 * 9.变换函数-map
 * map 变换函数会遍历接收者集合，让变换器函数作用于集合里的各个元素，
 * 返回结果是包含已修改元素的集合，会作为链上下一个函数的输入
 *
 * 2.原始集合没有被修改，map变换函数和你定义的变换器函数做完事情后，返回的是一个新的集合
 * ，这样，变量就不用变来变去的
 *
 * 事实上，函数式编程范式支持的设计理念就是不可变数据的副本在链上的函数间传递
 *
 * 3. map 返回的集合中的元素个数和输入集合必须一样，不过，返回的新集合的元素
 * 可以是不同类型的
 *
 *
 */


fun main() {

    val animals = listOf("zebra", "elephant", "rat", "monkey", "tiger")
    //集合变换
    val babies = animals.map { animal -> "A baby $animal"}
        .map { baby -> "$baby,with the cutest little tail ever!" }

    println(animals)
    println(babies)

    val mapLen = animals.map {
//        it.length
        it
    }
    println(mapLen)


}